#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<unistd.h>
#include<iostream>
#include<vector>
using namespace std;
/////////////////////////////////////////////////////////////
//进程程序替换
int main()
{
    printf("当前进程的开始代码\n");
    execl("/usr/bin/lssss","lsss","--color=auto",NULL);
    //execl("/usr/bin/top","top",NULL);
    //execl("/usr/bin/ls","ls","-al",NULL);
    printf("当前进程的结束代码\n");
return 0;
}



/////////////////////////////////////////////////////////
//进程非阻塞测试


//typedef void (*handl)();
//
//vector<handl> handls;
//void fun_one()
//{
//    cout<<"这是任务1"<<endl;
//}
//void fun_two()
//{
//    cout<<"这是任务2"<<endl;
//}
//
//void Push()
//{
//    handls.push_back(fun_one);
//    handls.push_back(fun_two);
//}
//
//int main()
//{
//    pid_t id =fork();
//     if(id<0)
//     {
//        printf("进程创建失败！\n");
//        return 1;
//                          
//     }
//     else if (id==0)
//    {
//        printf("i am child process!\n");
//        int cnt=5;
//        while(cnt>0)
//        {
//            printf("child , %d,pid: %d,ppid: %d\n",cnt,getpid(),getppid());
//            cnt--;
//            sleep(1);                                                           
//        }
//        exit(105);
//    }
//     else
//     {
//        int quit=0;
//        while(!quit)
//        {
//            int status=0;
//            pid_t res=waitpid(id,&status,WNOHANG);
//            if(res>0)
//            {
//                //进程等待成功&&子进程已退出
//                printf("等待子进程退出成功！退出码：%d\n",WEXITSTATUS(status));
//                break;
//            }
//            else if (res==0)
//            {
//                //进程等待成功但是子进程并没有退出
//                printf("子进程未退出，父进程可以执行其他任务！\n");
//                if(handls.empty())
//                {
//                  Push();}
//              for(auto& e:handls)
//                {e();}
//            }
//            else{
//             //进程等待失败
//              printf("等待失败！%d\n ",WIFEXITED(status));
//               break;
//           }
//           sleep(1); }
//    }
//    return 0;
//
//
